package views;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.swing.text.html.HTMLDocument.Iterator;
import java.util.ArrayList;
import java.util.Map.Entry;
import controller.Serializer;
import models.Bank;
import models.Person;
import models.Account;
public class AdminViewClients {
private Serializer io;
private JTable table;
private DefaultTableModel model;
private Bank bank;
/**
* constructor
*/
public AdminViewClients() {
JFrame frame = new JFrame();
io = new Serializer();
table = new JTable();
bank = io.deserializeBank();
// create a table model and set a Column Identifiers to this model
Object[] columns = { "Name", "Occupation", "Age", "Number of accounts" };
model = new DefaultTableModel();
model.setColumnIdentifiers(columns);
Font font = new Font("", 1, 22);
table.setModel(model);
table.setBackground(new Color(255, 255, 230));
table.setForeground(new Color(81, 52, 21));
table.setGridColor(new Color(81, 52, 21));
table.setFont(font);
table.setRowHeight(30);
for (Person person : bank.getBankData().keySet()) {
Object[] row = { person.getName(), person.getOccupation(), person.getAge(), person.getNumberOfAccounts() };
model.addRow(row);
}
JTextField textName = new JTextField();
JTextField textOccupation = new JTextField();
JTextField textAge = new JTextField();
JTextField textPIN = new JTextField();
// create JButtons
JButton btnAdd = new JButton("Add Person");
btnAdd.setBackground(new Color(255, 255, 230));
JButton btnRemove = new JButton("Remove Person");
btnRemove.setBackground(new Color(255, 255, 230));
JButton btnGenerateBankReport = new JButton("Generate report");
btnGenerateBankReport.setBackground(new Color(255, 255, 230));
JButton btnViewAccounts = new JButton("All accounts");
btnViewAccounts.setBackground(new Color(255, 255, 230));
// textId.setBounds(20, 220, 100, 25);
textName.setBounds(20, 210, 100, 25);
textName.setBackground(new Color(255, 255, 230));
textOccupation.setBounds(20, 240, 100, 25);
textOccupation.setBackground(new Color(255, 255, 230));
textAge.setBounds(20, 270, 100, 25);
textAge.setBackground(new Color(255, 255, 230));
textPIN.setBounds(20, 300, 100, 25);
textPIN.setBackground(new Color(255, 255, 230));
btnAdd.setBounds(150, 210, 130, 25);
btnGenerateBankReport.setBounds(150, 240, 130, 25);
btnRemove.setBounds(150, 270, 130, 25);
btnViewAccounts.setBounds(150, 300, 130, 25);
// create JScrollPane
JScrollPane pane = new JScrollPane(table);
pane.setBounds(0, 0, 880, 200);
pane.getViewport().setBackground(new Color(232, 189, 128));
pane.setBackground(new Color(232, 189, 128));
frame.setLayout(null);
frame.add(pane);
// add JTextFields to the jframe
// frame.add(textId);
frame.add(textName);
frame.add(textOccupation);
frame.add(textAge);
frame.add(textPIN);
// add JButtons to the jframe
frame.add(btnAdd);
frame.add(btnRemove);
frame.add(btnViewAccounts);
frame.add(btnGenerateBankReport);
// create an array of objects to set the row data
Object[] row = new Object[4];
// button add row
btnAdd.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
row[0] = textName.getText();
row[1] = textOccupation.getText();
row[2] = textAge.getText();
row[3] = 0;
model.addRow(row);
Person person=new Person(row[0].toString(),row[1].toString(),Integer.parseInt(row[2].toString()),Integer.parseInt(textPIN.getText().toString()));
bank.addPerson(person);
System.out.println(bank.getReport());
io.SerializeBank(bank);
}
});
btnViewAccounts.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new AdminViewAccounts();
frame.dispose();
}
});
// button remove row
btnRemove.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//row[0] = textName.getText();
int i = table.getSelectedRow();
if (i >= 0) {
java.util.Iterator<Entry<Person, ArrayList<Account>>> it= bank.getBankData().entrySet().iterator();
Entry<Person, ArrayList<Account>> entry ;
while (it.hasNext()){
entry = it.next();
if (entry.getKey().getName().compareTo(textName.getText().toString())==0)
if (entry.getKey().getOccupation().compareTo(textOccupation.getText().toString())==0)
if (entry.getKey().getAge()==(Integer.parseInt(textAge.getText().toString())))
it.remove();
io.SerializeBank(bank);
System.out.println(bank.getReport());
}
model.removeRow(i);
} else {
System.out.println("Delete Error");
}
}
});
// get selected row data From table to textfields
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// i = the index of the selected row
int i = table.getSelectedRow();
textName.setText(model.getValueAt(i, 0).toString());
textOccupation.setText(model.getValueAt(i, 1).toString());
textAge.setText(model.getValueAt(i, 2).toString());
textPIN.setText("0");
// textPIN.setText(model.getValueAt(i, 3).toString());
}
});
// button update row
btnGenerateBankReport.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new BankReportView(bank.getReport());
}
});
frame.setSize(900, 410);
frame.getContentPane().setBackground(new Color(162, 104, 42));
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}